package cc.cc4414.crtc.controller;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import cc.cc4414.crtc.util.FileUtils;

/**
 * @author cc 2018年10月28日
 */
@RestController
@RequestMapping("file")
public class FileController {
	@Value("${file.rootPath}")
	private String rootPath;

	/**
	 * 上传视频通话中的小块文件
	 * 
	 * @param file
	 *            小块文件
	 * @param name
	 *            文件夹名称
	 */
	@PostMapping("upload")
	public void upload(MultipartFile file, String name) {
		try {
			String pathname = rootPath + name;
			File f = new File(pathname);
			if (!f.exists()) {
				f.mkdirs();
			}
			String path = pathname + "/" + System.currentTimeMillis();
			file.transferTo(new File(path));
			FileUtils.mergeFiles(pathname + ".webm", new String[] { path });
		} catch (IllegalStateException | IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 合并文件夹内所有小块文件
	 * 
	 * @param name
	 *            文件夹名称
	 */
	@PostMapping("merge")
	public void merge(String name) {
		String pathname = rootPath + name;
		String[] files = Arrays.asList(new File(pathname).list()).stream().map(file -> pathname + "/" + file)
				.toArray(String[]::new);
		FileUtils.mergeFiles(pathname + ".webm", files);
	}
}
